package com.xgure.controller.admin;

import com.xgure.dto.ProductAddDTO;
import com.xgure.dto.ProductQueryDTO;
import com.xgure.dto.ProductUpdateDTO;
import com.xgure.pojo.Product;
import com.xgure.result.PageResult;
import com.xgure.result.Result;
import com.xgure.service.ProductService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping(("/admin/product"))
public class ProductController {

    @Resource
    private ProductService productService;

    /**
     * 添加新的商品
     *
     */
    @PostMapping("/add")
    public Result add(@RequestBody ProductAddDTO productAddDTO) {
        log.info("添加商品：{}", productAddDTO);
        productService.add(productAddDTO);
        return Result.success();
    }

    /**
     * 更新商品信息
     *
     */
    @PutMapping("/update")
    public Result update(@RequestBody ProductUpdateDTO productUpdateDTO) {
        log.info("更新商品：{}", productUpdateDTO);
        productService.update(productUpdateDTO);
        return Result.success();
    }

    /**
     * 获取当前店铺的所有商品
     *
     * @return 商品列表
     */
    @PostMapping("/list")
    public Result<PageResult> list(@RequestBody ProductQueryDTO productQueryDTO) {
        log.info("获取店铺的所有商品");
        PageResult products = productService.list(productQueryDTO);
        return Result.success(products);
    }

    /**
     * 根据商品名获取商品信息
     *
     */
    @GetMapping("/list")
    public Result<PageResult> getByName(@RequestParam("id") String id, @RequestParam("productName") String productName) {
        log.info("根据名称获取商品：{}", productName);
        PageResult products = productService.getByName(id, productName);
        return Result.success(products);
    }

    /**
     * 根据商品id删除商品
     *
     */
    @DeleteMapping("/delete/{productId}")
    public Result delete(@PathVariable String productId) {
        log.info("删除商品：{}", productId);
        productService.delete(productId);
        return Result.success();
    }


}
